空间分析概述

最后更新时间:2020年12月11日

功能介绍

空间分析是从空间数据中获取有关地理对象的空间位置、分布、形态、形成和演变等信息的分析技术,是地理信息系统的核心功能之一,它特有的对地理信息的提取、表现和传输的功能,是地理信息系统区别于一般管理信息系统的主要功能特征。GIS中实现空间分析的基本功能,包括缓冲区分析、叠加分析、路径分析、空间量算、空间插值、统计分类分析等。

空间分析功能支持要素、图层的空间分析。针对几何要素间的空间分析与计算,使用com.zondy.mapgis.geometry.GeometryOperator类接口实现;针对图层类的空间分析功能,则使用com.zondy.mapgis.analysis.spatialanalysis.SpatialAnalysis类接口实现。

1
缓冲分析

开发者可结合实际需求实现缓冲分析功能,所谓缓冲区就是在点、线、区实体周围建立一定宽度范围的多边形。

2
叠加分析

开发者可结合实际需求实现叠加分析功能,借助叠加分析可以进行空间数据相交、求并、相减等多种空间分析操作。

3
裁剪分析

开发者可结合实际需求实现裁剪分析功能。裁剪分析支持内裁和外裁,内裁是裁剪结果保留为裁剪框边界之内的图形及相关属性;外裁是裁剪结果保留为裁剪框边界之外的图形及相关属性。

4
空间计算

开发者可结合实际需求进行几何要素的空间计算,如计算两点距离、计算直线角度、计算两线交点等。

5
空间关系

开发者可结合实际需求进行空间关系判别,空间关系是对空间要素的拓扑关系的判断,包括相邻、相交、相离等基本的拓扑关系。

6
长度量算

开发者可结合实际需求实现长度量算功能,可以量算几何距离,也可以量算实地距离。

7
面积量算

开发者可结合实际需求实现面积量算功能,可以量算几何面积,也可以量算实地面积。

功能接口

要素级-空间分析

针对空间几何要素的空间分析功能对应API为com.zondy.mapgis.geometry的空间几何操作类GeometryOperator(10.3:com.zondy.mapgis.core.spatial,其核心接口为空间分析类SpaAnalysis、空间关系类SpaRelation、空间计算类SpaCalculator)。

例如,部分常用功能接口如下:

接口 说明
GeometryOperator.buffer() 缓冲区分析
GeometryOperator.overlay() 叠加分析
GeometryOperator.clipGeometryByGeometry() 区裁剪几何
GeometryOperator.clipGeometryByRect() 矩形裁剪几何
GeometryOperator.clipDotsByRect() 矩形裁剪

提供几何要素空间关系计算,即拓扑关系分析计算功能。

接口 说明
GeometryOperator.equals() 相同
GeometryOperator.crosses() 穿越相交
GeometryOperator.contains() 包含
GeometryOperator.covers() 覆盖
GeometryOperator.coveredBy() 被覆盖
GeometryOperator.disjoint() 相离
GeometryOperator.intersects() 相交
GeometryOperator.touches() 相接
GeometryOperator.difference() 求差
GeometryOperator.intersection() 求交
GeometryOperator.symDifference() 求对称差
GeometryOperator.union() 求并
GeometryOperator.within() 点在区内

提供几何空间要素间的距离计算、交点计算、周长面积计算等功能。

接口 说明
GeometryOperator.calculateDistance()/td> 计算两点距离
GeometryOperator.calculateDistanceDotToLine() 计算点到折线的距离
GeometryOperator.calculateIntersectionLineLine() 计算折线与折线交点
GeometryOperator.calculateLineLength() 计算折线长度
GeometryOperator.calculatePolygonPerimeter() 计算区周长
GeometryOperator.calculateArea() 计算区面积

说明:另外,com.zondy.mapgis.spatial.SpaCalculator类也提供一些空间计算方法,为上层应用服务。例如,计算两点具体的方法:SpaCalculator.distance()。

接口 说明
Angle.calculateAzimuth() 计算方位角
Angle.calculateSlopeAngle() 计算坡度角
Angle.calculateVectorAngle() 计算向量夹角
Angle.calculateVectorRotateAngle() 计算向量旋转角

针对空间投影,com.zondy.mapgis.geometry.GeometryOperator类提供project()接口实现。另外,com.zondy.mapgis.spatial.SpaProjection类也提供如下一些空间投影常用方法,为上层应用服务:

接口 说明
SpaProjection.projTrans() 单点投影
SpaProjection.lonLat2Mercator() WGS84 (度)到 web墨卡托投影(米)
SpaProjection.mercator2LonLat() web墨卡托投影(米)到 WGS84(度)

图层类-空间分析

针对图层类的空间分析功能,通过com.zondy.mapgis.analysis.spatialanalysis.SpatialAnalysis类接口实现。

接口 说明
SpatialAnalysis.buffer() 缓冲区分析
SpatialAnalysis.overlay() 叠加分析
SpatialAnalysis.clip() 裁剪分析

实现方法

空间分析的整体思路基本一致,如下图所示,不同功能之间需调用不同的接口,传递不同的参数,获取不同的结果。

空间分析实现流程.png

(1) 分析对象获取:获取待分析的几何图形对象或几何对象,一般可通过交互操作在地图中选取或者通过查询操作得到;

(2) 空间分析对象准备:创建空间分析对象(如GeometryOperator或SpatialAnalysis类对象),然后准备待分析的几何对象;

(3) 实现空间分析:调用空间分析接口实现空间分析并返回分析结果,如buffer()、clip()、overlay()、union()、difference()、symDifference()等;

(4) 结果处理:将空间分析得到的结果进行展现,一般将得到的分析结果转为图形对象,然后通过图形覆盖物在地图上展示。